package ar.com.tesis.mobile.adapters;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;

import ar.com.tesis.mobile.R;
import ar.com.tesis.mobile.activities.ActividadPuntoDeInteres;
import ar.com.tesis.mobile.model.FotoPuntoDeInteres;
import ar.com.tesis.mobile.model.PuntoDeInteres;

public class PuntoDeInteresAdapter extends BaseAdapter{

	private ActividadPuntoDeInteres actividad;
	private List<PuntoDeInteres> puntosDeInteres;
    private LayoutInflater inflater;

    public PuntoDeInteresAdapter(ActividadPuntoDeInteres actividad){
		
		this.actividad = actividad;
        inflater = LayoutInflater.from(actividad);
		this.setPuntosDeInteres(new ArrayList<PuntoDeInteres>());
	}
	
	@Override
	public int getCount() {
		return this.puntosDeInteres.size();
	}

	@Override
	public PuntoDeInteres getItem(int position) {
		return this.puntosDeInteres.get(position);
	}

	@Override
	public long getItemId(int position) {
		return position;
	}

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {

        ViewHolder holder;
        if (convertView == null) {

            holder = new ViewHolder();

            convertView = inflater.inflate(R.layout.item_punto_de_interes, parent, false);
            holder.nombre = (TextView) convertView.findViewById(R.id.punto_de_interes_nombre);
            holder.descripcion = (TextView) convertView.findViewById(R.id.punto_de_interes_descripcion);
            holder.foto = (ImageView) convertView.findViewById(R.id.punto_de_interes_foto);
            holder.puntos = (TextView) convertView.findViewById(R.id.punto_de_interes_puntos);
            convertView.setTag(holder);

        } else {
            holder = (ViewHolder) convertView.getTag();
        }

		PuntoDeInteres puntoDeInteres = this.puntosDeInteres.get(position);
		holder.nombre.setText(puntoDeInteres.getNombre());
        holder.descripcion.setText(puntoDeInteres.getDescripcion());
        holder.puntos.setText(puntoDeInteres.getPuntos() + " " + actividad.getString(R.string.puntos));

        FotoPuntoDeInteres foto = puntoDeInteres.getFoto();

        if ( foto!=null && foto.getUrl()!=null && !foto.getUrl().trim().isEmpty() ){

            this.actividad.mostrarImagen(puntoDeInteres.getFoto().getUrl(), holder.foto);
        } else {

            this.actividad.mostrarImagen( "drawable://" + R.drawable.foto_faltante, holder.foto);
        }

        return convertView;
	}
	
	public void setPuntosDeInteres(List<PuntoDeInteres> puntosDeInteres) {
		
		this.puntosDeInteres = puntosDeInteres;
		notifyDataSetChanged();
	}

    protected class ViewHolder {

        TextView nombre;
        TextView descripcion;
        ImageView foto;
        TextView puntos;
    }

}
